---
title: 使用PXF访问Azure, Google Cloud Storage, Minio和S3对象存储
---

<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
-->

PXF安装了Azure Blob Storage, Azure Data Lake, Google Cloud Storage, Minio和S3对象存储的连接器

## <a id="objstore_prereq"></a>先决条件

在使用PXF处理对象存储数据之前，请确保：

- 您已经在Greenplum 数据库segment主机上配置并初始化了PXF，并且PXF正在每台主机上运行。有关其他信息，请参阅[配置PXF](instcfg_pxf.html)
- 您已经配置了计划在每个Greenplum数据库segment主机上使用的PXF对象存储连接器。 有关说明，请参阅[配置Azure、Google云端存储、Minio和S3对象存储的连接器](objstore_cfg.html)。
- Greenplum数据库segment主机与外部对象存储系统之间的时间是同步的。


## <a id="objstore_connectors"></a>连接器、数据格式和配置文件

PXF对象存储连接器提供内置配置文件支持以下数据格式：

- Text
- Avro
- JSON
- Parquet
- AvroSequenceFile
- SequenceFile

与Azure、Google Cloud Storage、Minio和S3的PXF连接器提供了以下配置文件以读取、写入（在许多情况下）这些受支持的数据格式：

| 数据格式 | Azure Blob Storage | Azure Data Lake | Google Cloud Storage | S3 或 Minio |
|-----|------|---------|------------|----------------|
| 分隔的单行[纯文本](objstore_text.html) | wasbs:text | adl:text | gs:text | s3:text |
| 分隔的[带引号的换行符文本](objstore_text.html) | wasbs:text:multi | adl:text:multi | gs:text:multi | s3:text:multi |
| [Avro](objstore_avro.html) | wasbs:avro | adl:avro | gs:avro | s3:avro |
| [JSON](objstore_json.html) | wasbs:json | adl:json | gs:json | s3:json |
| [Parquet](objstore_parquet.html) | wasbs:parquet | adl:parquet | gs:parquet | s3:parquet |
| AvroSequenceFile | wasbs:AvroSequenceFile | adl:AvroSequenceFile | gs:AvroSequenceFile | s3:AvroSequenceFile |
| [SequenceFile](objstore_seqfile.html) | wasbs:SequenceFile | adl:SequenceFile | gs:SequenceFile | s3:SequenceFile |

在 `CREATE EXTERNAL TABLE` 命令中指定 `pxf` 协议以创建引用特定对象存储中的文件或目录的Greenplum数据库外部表时，可以提供配置文件名称。

## <a id="sample_ddl"></a>示例CREATE EXTERNAL TABLE命令

以下命令创建了一个引用S3上的文本文件的外部表。指定名为 `s3:text` 的配置文件和名为 `s3srvcfg` 的服务配置：

<pre>
CREATE EXTERNAL TABLE pxf_s3_text(location text, month text, num_orders int, total_sales float8)
  LOCATION ('pxf://S3_BUCKET/pxf_examples/pxf_s3_simple.txt?<b>PROFILE=s3:text&SERVER=s3srvcfg</b>')
FORMAT 'TEXT' (delimiter=E',');
</pre>

以下命令创建了一个引用Azure Blob Storage上文本文件的外部表。 指定名为 `wasbs:text` 的配置文件和名为 `wasbssrvcfg` 的服务配置。 您将提供Azure Blob Storage 容器标识和您的 Azure Blob Storage 账户。

<pre>
CREATE EXTERNAL TABLE pxf_wasbs_text(location text, month text, num_orders int, total_sales float8)
  LOCATION ('pxf://<b>AZURE_CONTAINER@YOUR_AZURE_BLOB_STORAGE_ACCOUNT_NAME</b>.blob.core.windows.net/path/to/blob/file?<b>PROFILE=wasbs:text&SERVER=wasbssrvcfg</b>')
FORMAT 'TEXT';
</pre>

以下命令创建了一个引用Azure Data Lake上文本文件的外部表。 指定名为 `adl:text` 的配置文件和名为 `adlsrvcfg` 的服务配置。 您将提供您的Azure Data Lake 账户。

<pre>
CREATE EXTERNAL TABLE pxf_adl_text(location text, month text, num_orders int, total_sales float8)
  LOCATION ('pxf://<b>YOUR_ADL_ACCOUNT_NAME</b>.azuredatalakestore.net/path/to/file?<b>PROFILE=adl:text&SERVER=adlsrvcfg</b>')
FORMAT 'TEXT';
</pre>

以下命令创建了一个引用Google Cloud Storage上JSON文件的外部表。 指定名为 `gs:json` 的配置文件和名为 `gcssrvcfg` 的服务配置：

<pre>
CREATE EXTERNAL TABLE pxf_gsc_json(location text, month text, num_orders int, total_sales float8)
  LOCATION ('pxf://dir/subdir/file.json?<b>PROFILE=gs:json&SERVER=gcssrvcfg</b>')
FORMAT 'CUSTOM' (FORMATTER='pxfwritable_import');
</pre>

## <a id="s3_override"></a>覆盖S3服务配置

如果您访问S3对象存储, 可以通过 `CREATE EXTERNAL TABLE` `LOCATION` 子句中的以下自定义选项直接指定S3访问ID和密钥，从而覆盖S3服务配置：

| 自定义选项  | 值描述 |
|-------|-------------------------------------|
| accesskey    | AWS账户访问密钥ID |
| secretkey    | 与AWS访问密钥ID关联的密钥. |

For example:
<pre>CREATE EXTERNAL TABLE pxf_ext_tbl(name text, orders int)
  LOCATION ('pxf://S3_BUCKET/dir/file.txt?PROFILE=s3:text&SERVER=s3srvcfg<b>&accesskey=YOURKEY&secretkey=YOURSECRET</b>')
FORMAT 'TEXT' (delimiter=E',');</pre>

<div class="note warning">已这种方式提供的凭据在外部表定义中可见。不要在生产环境中使用这种传递凭据的方法。</div>

PXF目前不支持以这种方式覆盖 Azure、 Google Cloud Storage和Minio服务器凭据。